/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.gpstracking.BL;

import com.gpstracking.BE.*;
import com.gpstracking.DA.AreaDA;
import com.gpstracking.DA.PuntoDA;
import com.gpstracking.DA.RutaDA;
import com.gpstracking.Utils.Geometry.Point;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author jmj
 */
public class RutaBL {
    public boolean registrar( String nombre, String descripcion, String color, List<Point> puntos, Usuario usuario  ){
        try{
        Ruta ruta = new Ruta();
        ruta.setNombre(nombre);
        ruta.setDescripcion(descripcion);
        ruta.setColor(color);
        ruta.setUsuario(usuario);
        
        List<Punto> Puntos = new ArrayList<Punto>();
        
        for( Point punto : puntos ){
            Punto tmp =  new Punto();
            tmp.setRuta(ruta);
            tmp.setLatitud(punto.x);
            tmp.setLongitud(punto.y);
            tmp.setNombre( nombre );
            
            Puntos.add( tmp );
        }
        return RutaDA.save( ruta, Puntos );
        
        }catch(Exception ex){
        	ex.printStackTrace();
        	return false;
        	
        }
    }
    
    public List<Ruta> listarRutas(Usuario usuario){
    	return RutaDA.getActivas(usuario);
    }

	public Ruta findById(int id, Usuario usuario) {
		// TODO Auto-generated method stub
		return RutaDA.get(id, usuario );
	}

	public boolean modificar(int idRuta, String nombre, String descripcion,
			String color, List<Point> puntos, Usuario usuario) {
		try{
	        Ruta ruta = RutaDA.get(idRuta , usuario );
	        ruta.setNombre(nombre);
	        ruta.setDescripcion(descripcion);
	        ruta.setColor(color);
	        ruta.setUsuario(usuario);
	        
	        if ( !PuntoDA.eliminar( idRuta ) ) return false;
	        
	        List<Punto> Puntos = new ArrayList<Punto>();
	        
	        for( Point punto : puntos ){
	            Punto tmp =  new Punto();
	            tmp.setRuta(ruta);
	            tmp.setLatitud(punto.x);
	            tmp.setLongitud(punto.y);
	            tmp.setNombre( nombre );
	            
	            Puntos.add( tmp );
	        }
	        return RutaDA.save( ruta, Puntos );
        }catch( Exception ex){
        	ex.printStackTrace();
        		return false;
        	
        }
	}
    
    
}
